﻿using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace TencentMapSdk.Entity
{
    /// <summary>
    /// 表结构集合
    /// </summary>
    public class TableCollection
    {
        /// <summary>
        /// 表结构集合
        /// </summary>
        [JsonProperty("tables")]
        public  List<CloudTable> Tables { get; set; }
    }

    /// <summary>
    /// 地点云表结构
    /// </summary>
    public class CloudTable
    {
        /// <summary>
        /// table_id
        /// </summary>
        [JsonProperty("table_id")]
        public string TableId { get; set; }
        /// <summary>
        /// 表名称
        /// </summary>
        [JsonProperty("table_name")]
        public string TableName { get; set; }
        /// <summary>
        /// 启用ud_id字段唯一性约束，该功能在建表时设置，不可更改，取值：
        /// 0不启用[默认]：ud_id值可为空，可重复，数据更新、删除不可使用用ud_id筛选（云搜索不受影响）
        /// 1启用，启用后，ud_id字段必值不可为空，且值必须唯一，数据更新、删除可使用ud_id做为筛选条件
        /// </summary>
        [JsonProperty("unique_ud_id")]
        public int UniqueUdId { get; set; }
        /// <summary>
        /// 表中数据量
        /// </summary>
        [JsonProperty("data_count")]
        public int DataCount { get; set; }
        /// <summary>
        /// 自定义字段的结构
        /// </summary>
        [JsonProperty("x")]
        public Dictionary<string, TableField> X { get; set; }
        /// <summary>
        /// 创建时间
        /// </summary>
        [JsonProperty("create_time")]
        public long CreateTime { get; set; }
        /// <summary>
        /// 修改时间
        /// </summary>
        [JsonProperty("update_time")]
        public long UpdateTime { get; set; }
    }

    /// <summary>
    /// 自定义字段
    /// </summary>
    public class TableField
    {
        /// <summary>
        /// 字段类型，可选值：
        /// number：数值(double)型
        /// string：字符串型，最大可存储4096个字节数据
        /// 注：字段创建后类型不可修改
        /// </summary>
        [JsonProperty("type")]
        public string Type { get; set; }
        /// <summary>
        /// 字段默认值
        /// </summary>
        [JsonProperty("default")]
        public object Default { get; set; }
        /// <summary>
        /// 数值(number)型字段，该字段是否允许 filter 筛选与排序，取值：
        ///1：允许
        ///0：[默认] 不允许      
        ///字符(string)型字段，该字段是否允许 keyword(关键词) 搜索，取值：
        ///1：允许
        ///0：[默认]  不允许       
        ///注：字段创建后本参数不可修改
        /// </summary>
        [JsonProperty("is_index")]
        public int IsIndex { get; set; }
        /// <summary>
        /// 字段注释，便于记忆与识别，最多256个字符（128个中文字符）
        /// </summary>
        [JsonProperty("comment")]
        public string Comment { get; set; }
        /// <summary>
        /// 创建时间
        /// </summary>
        [JsonProperty("create_time")]
        public long CreateTime { get; set; }
        /// <summary>
        /// 修改时间
        /// </summary>
        [JsonProperty("update_time")]
        public long UpdateTime { get; set; }

    }
}
